package com.qf.taobei.mapper;

import com.qf.taobei.entity.Store;
import com.qf.taobei.entity.bo.StoreOrderProduct;
import com.qf.taobei.entity.bo.StoreUser;
import com.qf.taobei.entity.vo.ProductIdAndName;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * Author :CRT
 *    店铺
 */
public interface StoreMapper {
    /**
     * 添加店铺
     * @param store
     * @return（操作数）0失败 1成功
     * 测试成功
     */
    int addStore(Store store);

    /**
     *根据店铺id删除单个/多个店铺（动态sql）
     * @param list
     * @return（操作数）0失败 1成功
     *测试成功
     */
    int deleteStoreByStoreIdsTrue(List<Integer> list);

    /**
     * 修改店铺信息（动态sql）
     * @param store
     * @return （操作数）0失败 1成功
     *测试成功
     */
    int updateStoreByStoreId(Store store);

    /**
     * 查找店铺信息（动态sql）
     * @param store
     * @return 存储店铺的集合
     *
     */
    List<Store> queryStores(Store store);

    /**
     * 根据店铺id查询店铺信息
     * @param storeId
     * @return
     */
    Store queryStoreByStoreId(Integer storeId);

    /**
     * 根据店铺id伪删除店铺
     * @param list
     * @return
     */
    int deleteStoreByStoreIdsFlase(List<Integer> list);

    /**
     * 动态查询店铺信息
     * @param storeUser
     * @return
     */
    List<StoreUser> queryStoreUser(StoreUser storeUser);

    /**
     * 动态查询已被删除的店铺信息
     * @param storeUser
     * @return
     */
    List<StoreUser> queryStoreUserWolfer(StoreUser storeUser);

    /**
     * 根据storeId伪删除所属店铺的商品
     * @param storeId
     * @return
     */
    int deleteProductByStoreIdFalse(int storeId);

    /**
     * 根据用户id查询所有订单id和对应的商品数量和价格
     * @param uid
     * @return
     */
    List<StoreOrderProduct> selectStatistics(int uid);

    /**
     * 根据三个状态查询商品总数
     * @param storeId
     * @param flag
     * @param tId
     * @return
     */
    Integer queryProductCount(@Param("storeId")Integer storeId,@Param("flag") Integer flag,@Param("tId")Integer tId);

    /**
     * 根据店铺id查询商品id,和姓名
     * @param storeId
     * @return
     */
    List<ProductIdAndName> queryProductIdAndNameByStoreId(Integer storeId);
    /**
     * 获取所有店铺
     * @author ldm
     * @return
     */
    List<Store> selectAllStore();

    /**
     * 根据店铺名获取店铺
     * @author ldm
     * @return
     */
    List<Store> getStoreByName(String name);

    /**
     * 根据店铺状态获取店铺
     * @author ldm
     * @return
     */
    List<Store> getStoreByFlag(Integer flag);

    /**
     * 更新店铺状态
     * @author ldm
     * @return
     */
    Integer updateStoreFlag(Integer id);
}
